package com.xiaopeng.common.secure;

import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 数据脱敏注解
 * 用于springboot Jackson Json转换 时数据脱敏
 * @author xiaopeng
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.TYPE})
@JacksonAnnotationsInside   // Jackson 库中的一个元注解（meta-annotation），它的主要作用是允许创建自定义的组合注解，将多个 Jackson 注解打包在一起复用。
@JsonSerialize(using = DesensitizationEncryptSerialize.class) // 指定序列化实现
//@JsonDeserialize(using = DesensitizationDecryptDeSerializer.class) // 指定反序列化实现
public @interface Desensitization {

    /**
     * 脱敏类型
     * @return
     */
    DesensitizationTypeEnum value();

}
